git rebase -i
code:md
## コミットログをキレイにする git rebase -i
- git rebase -i
- わからない場合は適当に新規に repo つくって、そこで試してみる
- コミットの歴史を書き換えるので、他人も使ってる remote branch には push しない
- Q: 実際運用するときはどんな感じになる?
- local branch でガシガシコミットする
- (このとき push はしない)
- 落ち着いたら、git rebase -i でコミットを整理
- 整理できたら、push する
- :rabbit: **ガシガシも全部 remote に置いて見せたい!的な発想は捨てましょう**
- Q: でもそのコードに至った過程とか残したいじゃない?
- そこはチーム次第
- 「fix typo みたいなくだらないものは消して」かもしれないし
- 「いや過程とかいいから数コミットくらいでまとめてくれ」かもしれないし
- Q: -i (commitID) の commitID が指すコミットは破壊される?
- Ans: されない
- fとrをする限りはされない(ほかは知らない)
- rebase -i の実行前後で log を確認して、commitID が変わってないことを見てみればいい
`
$ git log --oneline
コミットを確認する
`
`
$ git rebase -i (CommitID)
latestから指定コミットまでの範囲について、
コミットをいじるモードに入る
`
いじるモードのファイル
- oneline 形式で、**古いコミットから** ずらりと並ぶ
- 書き方は普通にコメントで書いてあるのでそえrを
隣接する2つのコミットをまとめたい場合
- fixupを使う
- 自分を、一つ上のコミットにまとめる
- コミットメッセージは、一つ上の方をそのまま使う
- before
- pick xxxxxxx commit1
- fixup yyyyyyy commit2
- pick zzzzzzz commit3
- after
- pick xxxxxxx commit1 ★ここにcommit2の変更も入っている
- pick zzzzzzz commit3
隣接するnつのコミットをまとめたい場合(fixupはfでもいける)
- before
- pick xxxxxxx commit1
- f yyyyyyy commit2
- f zzzzzzz commit3
- after
- pick xxxxxxx commit1 ★ここにcommit2とcommit3の変更も入っている
see: